package cn.good.yan.service.t1;

import java.util.concurrent.TimeUnit;

/**
 * 1. 了解多线程
 * 用户线程 ：是系统的工作线程， main 函数所在的线程就是一个用户线程， main方法结束，JVM《就退出
 * 守护线程 ：垃圾回收器就是守护线程，如果用户线程结束，守护线程没有执行完任务，整体的JVM也会结束
 *
 * @author shengren.yan
 * @create 2024-03-23
 */
public class Demo {
    public static void main(String[] args) {
        Thread t1 = new Thread(() -> {
            try {
                TimeUnit.SECONDS.sleep(3);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            // isDaemon 是判断是用户线程还是守护线程
            System.out.println(Thread.currentThread().getName() + "\t 开始运行, 是" +
                    (Thread.currentThread().isDaemon() ? "守护线程" : "用户线程"));
            while (true) {

            }
        }, "t1");
        // 设置守护线程，必须在start之前调用
        t1.setDaemon(true);
        t1.start();

        // 暂停几秒钟线程
        try {

            TimeUnit.SECONDS.sleep(3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println(Thread.currentThread().getName() + "\t ----end 主线程");
    }
}
